function WarriorG1zStar1() -- arms
	
	if not ThrottleFrame then _ThrottleFrame() end
	
	if _Shout and not ccrPHB(_Shout) and not IsMounted() and SIR(_Shout) then ccrCast(_Shout) end -- battle shout
	
	if ccrPIIC() then

		pullallunitsm("Deep Wounds", 5)
		glovescd, glovesdur, glovesenable = GetInventoryItemCooldown("player", 10)
	end

	if ccrPIIC() and ccrValidTarget() then
	
		local race = ccrUnitRace("player")
		-- local ttd = G1zStarttd() -- ttd disabled

		if ccRS.G1zStarInterrupt then InterruptTrainer() end

		-- recklessness (colossus smash, bloodbath)
		if useCDS and SIR(1719) and TTD[Target.GUID]--[[type(ttd) == "number"]] and ((not ccrPlayerHasTalent(12292) and (SpellCDDuration(86346) < 2 or not ccrTargetHasMyDebuffRemaining(86346, 5)) and (--[[ttd]]TTD[Target.GUID] > (192/ggalakrasrate() or ccrTargetHealth() < 20))) or (ccrPHB(12292) and (--[[ttd]]TTD[Target.GUID] > (192/ggalakrasrate()) or ccrTargetHealth() < 20)) or TTD[Target.GUID] <= 12) then ccrCast(1719) end -- ttd disabled
		-- recklessness (colossus smash, bloodbath)
		if ccrPlayerHasTalent(107574) and useCDS and SIR(107574) and (ccrPHB(1719) or (TTD[Target.GUID] and TTD[Target.GUID] <= 25)) then ccrCast(107574) end -- avatar (recklessness)
		-- skull banner (recklessness, colossus smash debuff)
		if useCDS and SIR(114207) and (not tSkullBanner or tSkullBanner+10 <= GetTime()) and (ccrPHB(1719) or ((SpellCDDuration(86346) < 2 or not ccrTargetHasMyDebuffRemaining(86346, 5)) and (TTD[Target.GUID] and TTD[Target.GUID] > 192 and ggalakrasrate() > 1))) then ccrCast(114207) end
		-- skull banner (recklessness, colossus smash debuff)
		-- gloves (bloodbath, colossus smash debuff)
		if useCDS and glovesenable == 1 and glovescd == 0 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346))) then UseInventoryItem(10) end
		-- gloves (bloodbath, colossus smash debuff)
		-- blood fury (bloodbath, colossus smash debuff, recklessness)
		if useCDS and race == "Orc" and SIR(20572) and (((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719)))) then ccrCast(20572) end
		-- blood fury (bloodbath, colossus smash debuff, recklessness)
		-- berserking
		if useCDS and race == "Troll" and SIR(26297) and ((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719))) then ccrCast(26297) end
		-- berserking (bloodbath, colossus smash debuff, recklessness)
		-- arcane torrent (bloodbath, colossus smash debuff, recklessness)
		if useCDS and race == "Blood Elf" and SIR(69179) and ((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719))) then ccrCast(69179) end
		-- arcane torrent (bloodbath, colossus smash debuff, recklessness)
		-- blood bath (colossus smash)
		if useCDS and ccrPlayerHasTalent(12292) and SIR(12292) and (ccrTargetHasMyDebuff(86346) or SpellCDDuration(86346) < 5 or (TTD[Target.GUID] and TTD[Target.GUID] <= 20)) then ccrCast(12292) end
		-- blood bath (colossus smash)
		if ccrPHBR(12880, 0.5) and SIR(18499) then ccrCast(18499) end -- berserker rage
		-- Heroic Leap actions+=/heroic_leap,if=debuff.colossus_smash.up

		-- aoe
		if GPlayerCount(5) > 1 and (ccRS.Auto_AoE or ccRS.Manual_AoE) then
			-- pullallunitsm("Deep Wounds")
			if ccrPlayerHasTalent(103840) and _ImpendingVictory and SCA(103840) then
				ccrCastAttack(103840)
				_ImpendingVictory = false
				return
			end
			if ccrPlayerHasTalent(46968) and _Shockwave and SIR(46968) then
				ccrCast(46968)
				_Shockwave = false
				return
			end
			if ccrPlayerHasTalent(12323) and _PiercingHowl and SIR(12323) then
				ccrCast(12323)
				_PiercingHowl = false
				return
			end
			if _Disarm and SCA(676) then
				ccrCastAttack(676)
				_Disarm = false
				return
			end
			if _ShatteringThrow and SCA(64382) then
				ccrCastAttack(64382)
				_ShatteringThrow = false
				return
			end
			if _IntimidatingShout and SIR(5246) then
				ccrCast(5246)
				_IntimidatingShout = false
				return
			end
			if not ccrPlayerHasTalent(103840) and _VictoryRush and SCA(34428) then
				ccrCastAttack(34428)
				_VictoryRush = false
				return
			end
			if ccrPlayerHasTalent(107570) and _StormBolt and SCA(107570) then
				ccrCastAttack(107570)
				_StormBolt = false
				return
			end			
			if SIR(12328) then ccrCast(12328) return end -- sweeping strikes
			if ccrRage() > 110 and GPlayerCount() <= 4 and SIR(845) then ccrCastAttack(845) end
			if ccrPlayerHasTalent(46924) and SIR(46924) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(46924) return end -- bladestorm (bloodbath)
			if ccrPlayerHasTalent(118000) and SIR(118000) and not ccrTargetHasMyDebuff(86346) then ccrCast(118000) return end
			if SCA(86346) and (not ccrTargetHasMyDebuff(86346) or ccrTargetHasMyDebuffRemaining(86346, 1)) then ccrCastAttack(86346) return end -- colossus smash
			
			if SIR(6343) then
				if #tNoObjectDeepWounds > 0 then
					ccrCast(6343)
					for i = 1, #tNoObjectDeepWounds do
						_G[rawget(tNoObjectDeepWounds, i).." DWAP"] = UnitAttackPower("player")
						if i == #tNoObjectDeepWounds then return end
					end
				elseif #tDeepWounds > 0 then
					for i = 1, #tDeepWounds do
						if not _G[rawget(tDeepWounds, i).." DWAP"] or _G[rawget(tDeepWounds, i).." DWAP"]*1.1 < UnitAttackPower("player") then
							ccrCast(6343)
							for i = 1, #tDeepWounds do
								_G[rawget(tDeepWounds, i).." DWAP"] = UnitAttackPower("player")
							end
							return
						end
					end
				end
			end
			if SCA(12294) and (GPlayerCount() == 2 or ccrRage() <= 50) then -- mortal strike
				ccrCastAttack(12294)
				_G[Target.GUID.." DWAP"] = UnitAttackPower("player")
				return
			end
			if SCA(5308) and (GPlayerCount() == 2 and not ccrPHB(139958)) then ccrCastAttack(5308) return end -- execute
			if SCA(1464) and ccrPHB(12328) and ccrTargetHasMyDebuff(86346) then ccrCastAttack(1464) return end -- slam
			if SCA(7384) and GPlayerCount() == 2 then ccrCastAttack(7384) return end -- overpower
			if SCA(1464) and ccrPHB(12328) then ccrCastAttack(1464) return end -- slam
			if _Shout and SIR(_Shout) then ccrCast(_Shout) return end -- shout
		end

		-- single target
		if ccrPlayerHasTalent(103840) and _ImpendingVictory and SIR(103840) then
			ccrCastAttack(103840)
			_ImpendingVictory = false
			return
		end
		if ccrPlayerHasTalent(46968) and _Shockwave and SIR(46968) then
			ccrCast(46968)
			_Shockwave = false
			return
		end
		if ccrPlayerHasTalent(12323) and _PiercingHowl and SIR(12323) then
			ccrCast(12323)
			_PiercingHowl = false
			return
		end
		if _Disarm and SCA(676) then
			ccrCastAttack(676)
			_Disarm = false
			return
		end
		if _ShatteringThrow and SCA(64382) then
			ccrCastAttack(64382)
			_ShatteringThrow = false
			return
		end
		if _IntimidatingShout and SIR(5246) then
			ccrCast(5246)
			_IntimidatingShout = false
			return
		end
		if not ccrPlayerHasTalent(103840) and _VictoryRush and SIR(34428) then
			ccrCastAttack(34428)
			_VictoryRush = false
			return
		end
		if ccrPlayerHasTalent(107570) and _StormBolt and SCA(107570) then
			ccrCastAttack(107570)
			_StormBolt = false
			return
		end
		if SCA(78) and (ccrPlayerRage() > 115 or (GInventory("Tier", "t16") > 1 and ccrTargetHasMyDebuff(86346) and ccrPlayerRage() > 60)) then ccrCastAttack(78) end -- heroic strike
		if SCA(12294) and (not ccrPHB(12880) or ccrPlayerRage() < 10 or ccrTargetHasMyDebuffRemaining(115767, 1) or not ccrTargetHasMyDebuff(115767)) then -- mortal strike
			ccrCastAttack(12294)
			_G[Target.GUID.." DWAP"] = UnitAttackPower("player")
			return
		end
		if SCA(86346) and (not ccrTargetHasMyDebuff(86346) or ccrTargetHasMyDebuffRemaining(86346, 1)) then ccrCastAttack(86346) return end -- colossus smash
		if SpellCDDuration(86346) <= 0 and ccrPHB(46924) then CancelUnitBuff("player","Bladestorm") return end
		if ccrPlayerHasTalent(46924) and SIR(46924) and GPlayerCount(8) > 0 and onCD(86346) then ccrCast(46924) return end -- bladestorm
		if SCA(12294) then -- mortal strike
			ccrCastAttack(12294)
			_G[Target.GUID.." DWAP"] = UnitAttackPower("player")
			return
		end
		if ccrPlayerHasTalent(107570) and SCA(107570) and ccrTargetHasMyDebuff(86346) then ccrCastAttack(107570) return end
		if ccrPlayerHasTalent(118000) and SIR(118000) and GPlayerCount(8) > 0 and not ccrTargetHasMyDebuff(86346) then ccrCast(118000) return end
		if SCA(5308) and (not ccrPHB(139958) or not ccrPHB(60503) or ccrPlayerRage() > 90 or (TTD[Target.GUID] and TTD[Target.GUID] < 12)) then ccrCastAttack(5308) return end -- execute
		if SCA(1464) and ccrTargetHealth() >= 20 and (ccrPHB(1719) or ccrPHBS(146285, 10)) then ccrCastAttack(1464) return end -- slam
		if SCA(7384) and ((ccrTargetHealth() >= 20 and ccrPlayerRage() < 100) or (ccrPHB(139958))) then ccrCastAttack(7384) return end --overpower
		if SCA(5308) then ccrCastAttack(5308) return end -- execute
		if SCA(1464) and ccrTargetHealth() >= 20 then ccrCastAttack(1464) return end -- slam
		if SCA(57755) then ccrCastAttack(57755) return end -- heroic throw
		if _Shout and SIR(_Shout) then ccrCast(_Shout) return end -- shout
	end -- arms
end

function WarriorG1zStar2() -- fury

	if not ThrottleFrame then _ThrottleFrame() end

	if _Shout and not ccrPHB(_Shout) and not IsMounted() and SIR(_Shout) then ccrCast(_Shout) end -- shout OoC

	if ccrPIIC() then

		pullallunitsm("Deep Wounds", 5)
		glovescd, glovesdur, glovesenable = GetInventoryItemCooldown("player", 10)
	end

	if ccrPIIC() and ccrValidTarget() and IsEquippedItemType("One-Hand") then
		
		local race = ccrUnitRace("player")
		-- local ttd = G1zStarttd()

		if ccRS.G1zStarInterrupt then InterruptTrainer() end

		if ccrPlayerHasTalent(103840) and _ImpendingVictory and SIR(103840) then
			ccrCastAttack(103840)
			_ImpendingVictory = false
			return
		end
		if ccrPlayerHasTalent(46968) and _Shockwave and SIR(46968) then
			ccrCast(46968)
			_Shockwave = false
			return
		end
		if ccrPlayerHasTalent(12323) and _PiercingHowl and SIR(12323) then
			ccrCast(12323)
			_PiercingHowl = false
			return
		end
		if _Disarm and SCA(676) then
			ccrCastAttack(676)
			_Disarm = false
			return
		end
		if _ShatteringThrow and SCA(64382) then
			ccrCastAttack(64382)
			_ShatteringThrow = false
			return
		end
		if _IntimidatingShout and SIR(5246) then
			ccrCast(5246)
			_IntimidatingShout = false
			return
		end
		if not ccrPlayerHasTalent(103840) and _VictoryRush and SIR(34428) then
			ccrCastAttack(34428)
			_VictoryRush = false
			return
		end
		if ccrPlayerHasTalent(107570) and _StormBolt and SCA(107570) then
			ccrCastAttack(107570)
			_StormBolt = false
			return
		end

		-- recklessness (colossus smash, bloodbath)
		if useCDS and SIR(1719) and TTD[Target.GUID] and ((not ccrPlayerHasTalent(12292) and (SpellCDDuration(86346) < 2 or not ccrTargetHasMyDebuffRemaining(86346, 5)) and (TTD[Target.GUID] > (192/ggalakrasrate() or ccrTargetHealth() < 20))) or (ccrPHB(12292) and (TTD[Target.GUID] > (192/ggalakrasrate()) or ccrTargetHealth() < 20)) or TTD[Target.GUID] <= 12) then ccrCast(1719) end
		-- recklessness (colossus smash, bloodbath)
		if ccrPlayerHasTalent(107574) and useCDS and SIR(107574) and (ccrPHB(1719) or (TTD[Target.GUID] and TTD[Target.GUID] <= 25)) then ccrCast(107574) end
		-- skull banner (recklessness, colossus smash debuff)
		if useCDS and SIR(114207) and (not tSkullBanner or tSkullBanner+10 <= GetTime()) and (ccrPHB(1719) or ((SpellCDDuration(86346) < 2 or not ccrTargetHasMyDebuffRemaining(86346, 5)) and (TTD[Target.GUID] and TTD[Target.GUID] > 192 and ggalakrasrate() > 1))) then ccrCast(114207) end
		-- skull banner (recklessness, colossus smash debuff)		
		-- gloves (bloodbath, colossus smash debuff)
		if useCDS and glovesenable == 1 and glovescd == 0 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346))) then UseInventoryItem(10) end
		-- gloves (bloodbath, colossus smash debuff)
		-- blood fury (bloodbath, colossus smash debuff, recklessness)
		if useCDS and race == "Orc" and SIR(20572) and (((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719)))) then ccrCast(20572) end
		-- blood fury (bloodbath, colossus smash debuff, recklessness)
		-- berserking
		if useCDS and race == "Troll" and SIR(26297) and ((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719))) then ccrCast(26297) end
		-- berserking (bloodbath, colossus smash debuff, recklessness)
		-- arcane torrent (bloodbath, colossus smash debuff, recklessness)
		if useCDS and race == "Blood Elf" and SIR(69179) and ((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719))) then ccrCast(69179) end
		-- arcane torrent (bloodbath, colossus smash debuff, recklessness)

		if GPlayerCount(5) > 3 and (ccRS.Auto_AoE or ccRS.Manual_AoE) then
			
			if ccrPlayerHasTalent(12292) and SIR(12292) then ccrCast(12292) end -- bloodbath
			-- berserker rage
			if SIR(18499) and ((ccrPlayerHasTalent(46924) and SpellCDDuration(46924) <= 0 and (ccrPHB(12292) or not ccrPlayerHasTalent(12292))) or (not ccrPlayerHasTalent(46924) and ccrPHBR(12880, 1) and SpellCDDuration(23381) > 1)) then ccrCast() end
			-- berserker rage
			if SIR(845) and ccrPlayerRage() > 90 then ccrCast(845) end
			-- Heroic Leap actions.aoe+=/heroic_leap,if=buff.enrage.up
			if SIR(46924) and ccrPlayerHasTalent(46924) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(46924) return end
			if SIR(23381) and not ccrPHB(12880) then
				if #tNoObjectDeepWounds > 0 then
					rawget(tNoObjectDeepWounds, 1):Face()
					rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
					return
				end
			end
			if SCA(85288) and ccrPHBS(85739, 3) then ccrCastAttack(85288) return end
			if SIR(1680) then ccrCast(1680) return end
			if ccrPlayerHasTalent(118000) and SIR(118000) and not ccrTargetHasMyDebuff(86346) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(118000) return end
			if SIR(23381) then
				if #tNoObjectDeepWounds > 0 then
					rawget(tNoObjectDeepWounds, 1):Face()
					rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
					return
				end
			end
			if SCA(86346) then ccrCastAttack(86346) return end
			if ccrPlayerHasTalent(107570) and SCA(107570) then ccrCastAttack(107570) return end
			if ccrPlayerHasTalent(46968) and SIR(46968) then ccrCast(46968) return end
			if _Shout and SIR(_Shout) then ccrCast(_Shout) return end
		end

		if GPlayerCount(5) > 2 and (ccRS.Auto_AoE or ccRS.Manual_AoE) then
			
			if ccrPlayerHasTalent(12292) and SIR(12292) then ccrCast(12292) end -- bloodbath
			-- berserker rage
			if SIR(18499) and ((ccrPlayerHasTalent(46924) and SpellCDDuration(46924) <= 0 and (ccrPHB(12292) or not ccrPlayerHasTalent(12292))) or (not ccrPlayerHasTalent(46924) and ccrPHBR(12880, 1) and SpellCDDuration(23381) > 1)) then ccrCast() end
			-- berserker rage
			if SIR(845) and (ccrPlayerRage() >= 70 and ccrTargetHasMyDebuff(86346) or ccrPlayerRage() > 90) then ccrCast(845) end
			-- Heroic Leap actions.three_targets+=/heroic_leap,if=buff.enrage.up&(debuff.colossus_smash.up&buff.cooldown_reduction.up|!buff.cooldown_reduction.up)
			if SIR(46924) and ccrPlayerHasTalent(46924) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(46924) return end
			if ccrPlayerHasTalent(118000) and SIR(118000) and not ccrTargetHasMyDebuff(86346) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(118000) return end
			if SIR(23381) then
				if #tNoObjectDeepWounds > 0 then
					rawget(tNoObjectDeepWounds, 1):Face()
					rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
					return
				end
			end
			if SCA(86346) then ccrCastAttack(86346) return end
			if ccrPlayerHasTalent(107570) and SCA(107570) and ccrTargetHasMyDebuff(86346) then ccrCastAttack(107570) return end
			if SCA(85288) and select(4, Player:GetBuff("Meat Cleaver")) == 2 then ccrCastAttack(85288) return end
			if SIR(1680) then ccrCast(1680) return end
			if ccrPlayerHasTalent(46968) and SIR(46968) then ccrCast(46968) return end
			if SCA(85288) then ccrCastAttack(85288) return end
			if _Shout and SIR(_Shout) then ccrCast(_Shout) return end
			if SCA(57755) then ccrCastAttack(57755) return end
		end

		if GPlayerCount(5) > 1 and (ccRS.Auto_AoE or ccRS.Manual_AoE) then

			if ccrPlayerHasTalent(12292) and SIR(12292) and (ccrPlayerHasTalent(46924) or SpellCDDuration(86346) < 2 or ccrTargetHasMyDebuffRemaining(86346, 5) or (TTD[Target.GUID] and TTD[Target.GUID] <= 20)) then ccrCast(12292) end
			if SIR(18499) and ((ccrPlayerHasTalent(46924) and SpellCDDuration(46924) <= 0 and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) and (not ccrPlayerHasTalent(107570) or not ccrTargetHasMyDebuff(86346))) or (not ccrPlayerHasTalent(46924) and ccrPHBR(12880, 1) and SpellCDDuration(23381) > 1)) then ccrCast(18499) end
			if SIR(845) and (ccrPlayerRage() >= 60 and ccrTargetHasMyDebuff(86346) or ccrPlayerRage() > 110) then ccrCast(845) end
			-- heroic_leap,if=buff.enrage.up&(debuff.colossus_smash.up&buff.cooldown_reduction.up|!buff.cooldown_reduction.up)
			if SIR(46924) and ccrPlayerHasTalent(46924) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) and (not ccrPlayerHasTalent(107570) or not ccrTargetHasMyDebuff(86346)) then ccrCast(46924) return end
			if ccrPlayerHasTalent(118000) and SIR(118000) and not ccrTargetHasMyDebuff(86346) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(118000) return end
			if SCA(86346) then ccrCastAttack(86346) return end
			if SIR(23381) then
				if #tNoObjectDeepWounds > 0 then
					rawget(tNoObjectDeepWounds, 1):Face()
					rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
					return
				elseif #tDeepWounds > 0 then
					for i = 1, #tDeepWounds do
						local _, _, _, _, _, _, expires = rawget(tDeepWounds, i):GetAura("Deep Wounds", "", "PLAYER")
						if expires - GetTime() < 5 then
							rawget(tNoObjectDeepWounds, 1):Face()
							rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
							return
						end
					end
				end
			end
			if ccrPlayerHasTalent(107570) and SCA(107570) and ccrTargetHasMyDebuff(86346) then ccrCastAttack(107570) return end
			if SCA(23381) then ccrCastAttack(23381) return end -- next line is wait for this
			if SpellCDDuration(23381) > 0 and SpellCDDuration(23381) <= 1 and not (ccrTargetHealth() < 20 and ccrTargetHasMyDebuff(86346) and ccrPlayerRage() >= 30 and ccrPHB(12880)) then return end
			if SCA(85288) and ccrPHB(85739) then ccrCastAttack(85288) return end
			if SIR(1680) and not ccrPHB(85739) then ccrCast(1680) return end
			if ccrPlayerHasTalent(46968) and SIR(46968) then ccrCast(46968) return end
			if SCA(5308) then ccrCastAttack(5308) return end
			if _Shout and SIR(_Shout) then ccrCast(_Shout) return end
			if SCA(57755) then ccrCastAttack(57755) return end
		end

		if useCDS and ccrPlayerHasTalent(12292) and (SpellCDDuration(86346) < 2 or not ccrTargetHasMyDebuffRemaining(86346, 5) or (TTD[Target.GUID]) and TTD[Target.GUID] <= 20) then ccrCast(12292) end -- bloodbath
		if SIR(18499) and ccrPHBR(12880, 1) and SpellCDDuration(23881) > 1 then ccrCast(18499) end -- berserker rage
		if SIR(78) and ((ccrTargetHasMyDebuff(86346) and ccrPlayerRage() >= 40) or ccrPlayerRage() >= 100 and ccrPHB(12880)) then ccrCast(78) end -- heroic strike
		-- Heroic Leap actions.single_target+=/heroic_leap,if=debuff.colossus_smash.up&buff.enrage.up
		if ccrPlayerHasTalent(107570) and ggalakrasrate() > 1 and ccrTargetHasMyDebuff(86346) and SCA(107570) then ccrCastAttack(107570) return end -- storm bolt
		if SCA(85288) and ccrPHBS(131116, 2) and ccrTargetHasMyDebuff(86346) and ccrTargetHealth() >= 20 then ccrCastAttack(85288) return end -- raging blow
		if ccrPlayerHasTalent(107570) and ggalakrasrate() == 1 and ccrTargetHasMyDebuff(86346) and SCA(107570) then ccrCastAttack(107570) return end -- storm bolt non galakras
		if SCA(23881) and not (ccrTargetHealth() < 20 and ccrTargetHasMyDebuff(86346) and ccrRage() >= 30 and ccrPHB(12880)) then ccrCastAttack(23881) return end -- bloodthirst
		if SCA(100130) and ccrPHB(46916) and ccrTargetHealth() >= 20 and SpellCDDuration(23881) > 0 and SpellCDDuration(23881) <= 1 then ccrCastAttack(100130) return end -- wild strike
		if not (ccrTargetHasMyDebuff(86346) and ccrPlayerRage() >= 30 and ccrPHB(12880) and ccrTargetHealth() < 20) and SpellCDDuration(23881) > 0 and SpellCDDuration(23881) <= 1 then return end -- wait for bloodthirst
		if ccrPlayerHasTalent(118000) and SIR(118000) and GPlayerCount(8) > 0 and not ccrTargetHasMyDebuff(86346) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(118000) return end -- dragon roar
		if SCA(86346) then ccrCastAttack(86346) return end -- colossus smash
		if ccrPlayerHasTalent(107570) and ggalakrasrate() == 1 and SCA(107570) then ccrCastAttack(107570) return end -- storm bolt
		if SCA(5308) and (ccrTargetHasMyDebuff(86346) or ccrRage() > 70 or (TTD[Target.GUID]) and TTD[Target.GUID] < 12) then ccrCastAttack(5308) return end -- execute
		if SCA(85288) and (ccrTargetHealth() < 20 or ccrPHBS(131116, 2) or (ccrTargetHasMyDebuff(86346) or (ccrPHBR(131116, 3) and SpellCDDuration(23881) >= 1))) then ccrCastAttack(85288) return end -- raging blow
		if ccrPlayerHasTalent(46924) and SIR(46924) and GPlayerCount(8) > 0 then ccrCast(46924) return end -- bladestorm
		if SCA(100130) and ccrPHB(46916) then ccrCastAttack(100130) return end -- wild strike
		if SCA(85288) and SpellCDDuration(86346) >= 3 then ccrCastAttack(85288) return end -- raging blow
		-- Shattering Throw actions.single_target+=/shattering_throw,if=cooldown.colossus_smash.remains>5
		if ccrPlayerHasTalent(46968) and SIR(46968) and GPlayerCount(10) > 0 then -- shockwave
			Target:Face()
			ccrCast(46968)
			return
		end
		if SCA(57755) and not ccrTargetHasMyDebuff(86346) and ccrPlayerRage() < 60 then ccrCastAttack(57755) return end -- heroic throw
		if _Shout and SIR(_Shout) and ccrPlayerRage() < 70 and not ccrTargetHasMyDebuff(86346) then ccrCast(_Shout) return end -- shout
		if SCA(100130) and ccrTargetHasMyDebuff(86346) and ccrTargetHealth() >= 20 then ccrCastAttack(100130) return end -- wild strike
		if _Shout and SIR(_Shout) and ccrPlayerRage() < 70 then ccrCast(_Shout) return end -- shout
		if SCA(100130) and SpellCDDuration(86346) >= 2 and ccrPlayerRage() >= 70 and ccrTargetHealth() >= 20 then ccrCastAttack(100130) return end -- wild strike
		if ccrPlayerHasTalent(103840) and SCA(103840) and SpellCDDuration(86346) >= 2 and ccrTargetHealth() >= 20 then ccrCastAttack(103840) return end -- impending victory
	end

	if ccrPIIC() and ccrValidTarget() and IsEquippedItemType("Two-Hand") then

		local race = ccrUnitRace("player")
		-- local ttd = G1zStarttd()

		if ccRS.G1zStarInterrupt then InterruptTrainer() end

		if ccrPlayerHasTalent(103840) and _ImpendingVictory and SIR(103840) then
			ccrCastAttack(103840)
			_ImpendingVictory = false
			return
		end
		if ccrPlayerHasTalent(46968) and _Shockwave and SIR(46968) then
			ccrCast(46968)
			_Shockwave = false
			return
		end
		if ccrPlayerHasTalent(12323) and _PiercingHowl and SIR(12323) then
			ccrCast(12323)
			_PiercingHowl = false
			return
		end
		if _Disarm and SCA(676) then
			ccrCastAttack(676)
			_Disarm = false
			return
		end
		if _ShatteringThrow and SCA(64382) then
			ccrCastAttack(64382)
			_ShatteringThrow = false
			return
		end
		if _IntimidatingShout and SIR(5246) then
			ccrCast(5246)
			_IntimidatingShout = false
			return
		end
		if not ccrPlayerHasTalent(103840) and _VictoryRush and SIR(34428) then
			ccrCastAttack(34428)
			_VictoryRush = false
			return
		end
		if ccrPlayerHasTalent(107570) and _StormBolt and SCA(107570) then
			ccrCastAttack(107570)
			_StormBolt = false
			return
		end

		-- recklessness (colossus smash, bloodbath)
		if useCDS and SIR(1719) and TTD[Target.GUID] and ((not ccrPlayerHasTalent(12292) and (SpellCDDuration(86346) < 2 or not ccrTargetHasMyDebuffRemaining(86346, 5)) and (TTD[Target.GUID] > (192/ggalakrasrate() or ccrTargetHealth() < 20))) or (ccrPHB(12292) and (TTD[Target.GUID] > (192/ggalakrasrate()) or ccrTargetHealth() < 20)) or TTD[Target.GUID] <= 12) then ccrCast(1719) end
		-- recklessness (colossus smash, bloodbath)
		if ccrPlayerHasTalent(107574) and useCDS and SIR(107574) and (ccrPHB(1719) or (TTD[Target.GUID] and TTD[Target.GUID] <= 25)) then ccrCast(107574) end
		-- skull banner (recklessness, colossus smash debuff)
		if useCDS and SIR(114207) and (not tSkullBanner or tSkullBanner+10 <= GetTime()) and (ccrPHB(1719) or ((SpellCDDuration(86346) < 2 or not ccrTargetHasMyDebuffRemaining(86346, 5)) and (TTD[Target.GUID] and TTD[Target.GUID] > 192 and ggalakrasrate() > 1))) then ccrCast(114207) end
		-- skull banner (recklessness, colossus smash debuff)		
		-- gloves (bloodbath, colossus smash debuff)
		if useCDS and glovesenable == 1 and glovescd == 0 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346))) then UseInventoryItem(10) end
		-- gloves (bloodbath, colossus smash debuff)
		-- blood fury (bloodbath, colossus smash debuff, recklessness)
		if useCDS and race == "Orc" and SIR(20572) and (((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719)))) then ccrCast(20572) end
		-- blood fury (bloodbath, colossus smash debuff, recklessness)
		-- berserking
		if useCDS and race == "Troll" and SIR(26297) and ((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719))) then ccrCast(26297) end
		-- berserking (bloodbath, colossus smash debuff, recklessness)
		-- arcane torrent (bloodbath, colossus smash debuff, recklessness)
		if useCDS and race == "Blood Elf" and SIR(69179) and ((ggalakrasrate() == 1 and (ccrPHB(12292) or (not ccrPlayerHasTalent(12292) and ccrTargetHasMyDebuff(86346)))) or (ggalakrasrate() > 1 and ccrPHB(1719))) then ccrCast(69179) end
		-- arcane torrent (bloodbath, colossus smash debuff, recklessness)

		if GPlayerCount(5) > 3 and (ccRS.Auto_AoE or ccRS.Manual_AoE) then
			
			if ccrPlayerHasTalent(12292) and SIR(12292) then ccrCast(12292) end -- bloodbath
			-- berserker rage
			if SIR(18499) and ((ccrPlayerHasTalent(46924) and SpellCDDuration(46924) <= 0 and (ccrPHB(12292) or not ccrPlayerHasTalent(12292))) or (not ccrPlayerHasTalent(46924) and ccrPHBR(12880, 1) and SpellCDDuration(23381) > 1)) then ccrCast() end
			-- berserker rage
			if SIR(845) and ccrPlayerRage() > 90 then ccrCast(845) end
			-- Heroic Leap actions.aoe+=/heroic_leap,if=buff.enrage.up
			if SIR(46924) and ccrPlayerHasTalent(46924) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(46924) return end
			if SIR(23381) and not ccrPHB(12880) then
				if #tNoObjectDeepWounds > 0 then
					rawget(tNoObjectDeepWounds, 1):Face()
					rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
					return
				end
			end
			if SCA(85288) and ccrPHBS(85739, 3) then ccrCastAttack(85288) return end
			if SIR(1680) then ccrCast(1680) return end
			if ccrPlayerHasTalent(118000) and SIR(118000) and not ccrTargetHasMyDebuff(86346) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(118000) return end
			if SIR(23381) then
				if #tNoObjectDeepWounds > 0 then
					rawget(tNoObjectDeepWounds, 1):Face()
					rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
					return
				end
			end
			if SCA(86346) then ccrCastAttack(86346) return end
			if ccrPlayerHasTalent(107570) and SCA(107570) then ccrCastAttack(107570) return end
			if ccrPlayerHasTalent(46968) and SIR(46968) then ccrCast(46968) return end
			if _Shout and SIR(_Shout) then ccrCast(_Shout) return end
		end

		if GPlayerCount(5) > 2 and (ccRS.Auto_AoE or ccRS.Manual_AoE) then
			
			if ccrPlayerHasTalent(12292) and SIR(12292) then ccrCast(12292) end -- bloodbath
			-- berserker rage
			if SIR(18499) and ((ccrPlayerHasTalent(46924) and SpellCDDuration(46924) <= 0 and (ccrPHB(12292) or not ccrPlayerHasTalent(12292))) or (not ccrPlayerHasTalent(46924) and ccrPHBR(12880, 1) and SpellCDDuration(23381) > 1)) then ccrCast() end
			-- berserker rage
			if SIR(845) and (ccrPlayerRage() >= 70 and ccrTargetHasMyDebuff(86346) or ccrPlayerRage() > 90) then ccrCast(845) end
			-- Heroic Leap actions.three_targets+=/heroic_leap,if=buff.enrage.up&(debuff.colossus_smash.up&buff.cooldown_reduction.up|!buff.cooldown_reduction.up)
			if SIR(46924) and ccrPlayerHasTalent(46924) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(46924) return end
			if ccrPlayerHasTalent(118000) and SIR(118000) and not ccrTargetHasMyDebuff(86346) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(118000) return end
			if SIR(23381) then
				if #tNoObjectDeepWounds > 0 then
					rawget(tNoObjectDeepWounds, 1):Face()
					rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
					return
				end
			end
			if SCA(86346) then ccrCastAttack(86346) return end
			if ccrPlayerHasTalent(107570) and SCA(107570) and ccrTargetHasMyDebuff(86346) then ccrCastAttack(107570) return end
			if SCA(85288) and select(4, Player:GetAura("Meat Cleaver")) == 2 then ccrCastAttack(85288) return end
			if SIR(1680) then ccrCast(1680) return end
			if ccrPlayerHasTalent(46968) and SIR(46968) then ccrCast(46968) return end
			if SCA(85288) then ccrCastAttack(85288) return end
			if _Shout and SIR(_Shout) then ccrCast(_Shout) return end
			if SCA(57755) then ccrCastAttack(57755) return end
		end
		if GPlayerCount(5) > 1 and (ccRS.Auto_AoE or ccRS.Manual_AoE) then

			if ccrPlayerHasTalent(12292) and SIR(12292) and (ccrPlayerHasTalent(46924) or SpellCDDuration(86346) < 2 or ccrTargetHasMyDebuffRemaining(86346, 5) or (TTD[Target.GUID] and TTD[Target.GUID] <= 20)) then ccrCast(12292) end
			if SIR(18499) and ( (ccrPlayerHasTalent(46924) and SpellCDDuration(46924) <= 0 and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) and (not ccrPlayerHasTalent(107570) or not ccrTargetHasMyDebuff(86346))) or (not ccrPlayerHasTalent(46924) and ccrPHBR(12880, 1) and SpellCDDuration(23381) > 1)) then ccrCast(18499) end
			if SIR(845) and (ccrPlayerRage() >= 60 and ccrTargetHasMyDebuff(86346) or ccrPlayerRage() > 110) then ccrCast(845) end
			-- heroic_leap,if=buff.enrage.up&(debuff.colossus_smash.up&buff.cooldown_reduction.up|!buff.cooldown_reduction.up)
			
			if SIR(46924) and ccrPlayerHasTalent(46924) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) and (not ccrPlayerHasTalent(107570) or not ccrTargetHasMyDebuff(86346)) then ccrCast(46924) return end
			if ccrPlayerHasTalent(118000) and SIR(118000) and not ccrTargetHasMyDebuff(86346) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(118000) return end
			if SCA(86346) then ccrCastAttack(86346) return end
			if SIR(23381) then
				if #tNoObjectDeepWounds > 0 then
					rawget(tNoObjectDeepWounds, 1):Face()
					rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
					return
				elseif #tDeepWounds > 0 then
					for i = 1, #tDeepWounds do
						local _, _, _, _, _, _, expires = rawget(tDeepWounds, i):GetAura("Deep Wounds", "", "PLAYER")
						if expires - GetTime() < 5 then
							rawget(tNoObjectDeepWounds, 1):Face()
							rawget(tNoObjectDeepWounds, 1):CastSpellByID(23381)
							return
						end
					end
				end
			end
			if ccrPlayerHasTalent(107570) and SCA(107570) and ccrTargetHasMyDebuff(86346) then ccrCastAttack(107570) return end
			if SCA(23381) then ccrCastAttack(23381) return end -- next line is wait for this
			if SpellCDDuration(23381) > 0 and SpellCDDuration(23381) <= 1 and not (ccrTargetHealth() < 20 and ccrTargetHasMyDebuff(86346) and ccrPlayerRage() >= 30 and ccrPHB(12880)) then return end
			if SCA(85288) and ccrPHB(85739) then ccrCastAttack(85288) return end
			if SIR(1680) and not ccrPHB(85739) then ccrCast(1680) return end
			if ccrPlayerHasTalent(46968) and SIR(46968) then ccrCast(46968) return end
			if SCA(5308) then ccrCastAttack(5308) return end
			if _Shout and SIR(_Shout) then ccrCast(_Shout) return end
			if SCA(57755) then ccrCastAttack(57755) return end
		end

		if useCDS and ccrPlayerHasTalent(12292) and (SpellCDDuration(86346) < 2 or not ccrTargetHasMyDebuffRemaining(86346, 5) or (TTD[Target.GUID] and TTD[Target.GUID] <= 20)) then ccrCast(12292) end -- bloodbath
		if SIR(18499) and ccrPHBR(12880, 1) and SpellCDDuration(23881) > 1 then ccrCast(18499) end -- berserker rage
		if SIR(78) and ((ccrTargetHasMyDebuff(86346) and ccrPlayerRage() >= 40) or ccrPlayerRage() >= 100 and ccrPHB(12880)) then ccrCast(78) end -- heroic strike
		-- Heroic Leap actions.single_target+=/heroic_leap,if=debuff.colossus_smash.up&buff.enrage.up
		if SCA(23881) and not ccrPHB(12880) then ccrCastAttack(23881) return end -- bloodthirst
		if ccrPlayerHasTalent(107570) and ggalakrasrate() > 1 and ccrTargetHasMyDebuff(86346) and SCA(107570) then ccrCastAttack(107570) return end -- storm bolt
		if SCA(85288) and ccrPHBS(131116, 2) and ccrTargetHasMyDebuff(86346) then ccrCastAttack(85288) return end -- raging blow
		if ccrPlayerHasTalent(107570) and ggalakrasrate() == 1 and ccrTargetHasMyDebuff(86346) and SCA(107570) then ccrCastAttack(107570) return end -- storm bolt non galakras
		if ccrPlayerHasTalent(118000) and SIR(118000) and GPlayerCount(8) > 0 and not ccrTargetHasMyDebuff(86346) and (ccrPHB(12292) or not ccrPlayerHasTalent(12292)) then ccrCast(118000) return end -- dragon roar
		if SCA(23881) then ccrCastAttack(23881) return end -- bloodthirst
		if SCA(100130) and ccrPHB(46916) and SpellCDDuration(23881) > 0.3 and SpellCDDuration(23881) <= 1 then ccrCastAttack(100130) return end -- wild strike inbetween bloodthirst
		if not (ccrTargetHasMyDebuff(86346) and ccrPlayerRage() >= 30 and ccrPHB(12880)) and SpellCDDuration(23881) > 0 and SpellCDDuration(23881) <= 1 then return end -- wait for bloodthirst
		if SCA(86346) then ccrCastAttack(86346) return end -- colossus smash
		if ccrPlayerHasTalent(107570) and ggalakrasrate() == 1 and SCA(107570) then ccrCastAttack(107570) return end -- storm bolt
		if SCA(5308) and ((not ccrPHBS(131116, 2) and (((ccrPlayerRage() > 70 and not ccrTargetHasMyDebuff(86346)) or ccrTargetHasMyDebuff(86346)) or (ccrPHB(146250) or ccrPHB(146246) or ccrPHB(148899)))) or (TTD[Target.GUID] and TTD[Target.GUID] < 5)) then ccrCastAttack(5308) return end -- execute
		if SIR(18499) and (not ccrPHB(131116) or not ccrPHBS(131116, 2)) and ccrTargetHealth() >= 20 then ccrCast(18499) return end -- berserker rage
		if SCA(85288) and (not ccrPHBR(131116, 3) or ccrTargetHasMyDebuff(86346) or ccrPHBS(131116, 2)) then ccrCastAttack(85288) return end -- raging blow
		if ccrPlayerHasTalent(46924) and SIR(46924) and onCD(23881) and GPlayerCount(8) > 0 then ccrCast(46924) return end -- bladestorm
		if ccrPlayerHasTalent(46924) and UnitBuff("player", "Bladestorm") and SpellCDDuration(23881) < 1 then CancelUnitBuff("player","Bladestorm") return end -- interrupt bladestorm
		if SCA(85288) and SpellCDDuration(86346) >= 1 then ccrCastAttack(85288) return end -- raging blow
		if SCA(100130) and ccrPHB(46916) then ccrCastAttack(100130) return end -- wild strike
		-- Shattering Throw actions.single_target+=/shattering_throw,if=cooldown.colossus_smash.remains>5
		if ccrPlayerHasTalent(46968) and SIR(46968) and GPlayerCount(10) > 0 then -- shockwave
			Target:Face()
			ccrCast(46968)
			return
		end
		if SCA(57755) and not ccrTargetHasMyDebuff(86346) and ccrPlayerRage() < 60 then ccrCastAttack(57755) return end -- heroic throw
		if SCA(100130) and ccrTargetHasMyDebuff(86346) then ccrCastAttack(100130) return end -- wild strike
		if _Shout and SIR(_Shout) and ccrPlayerRage() < 70 then ccrCast(_Shout) return end -- shout
		if ccrPlayerHasTalent(103840) and SCA(103840) and SpellCDDuration(86346) >= 1.5 then ccrCastAttack(103840) return end -- impending victory
		if SCA(100130) and SpellCDDuration(86346) >= 2 and ccrPlayerRage() >= 70 then ccrCastAttack(100130) return end -- wild strike
	end 
end

function WarriorG1zStar3() -- protection

	if GetShapeshiftForm() ~= 2 then CastShapeshiftForm(2) return end -- defensive stance

	if not debuffframe then
		debuffframe = CreateFrame("GameTooltip", "debuffframe", UIParent, "GameTooltipTemplate")
		debuffframe:SetOwner(UIParent, "ANCHOR_NONE")
	end
	if not ThrottleFrame then _ThrottleFrame() end

	if _Shout and not ccrPHB(_Shout) and not IsMounted() and SIR(_Shout) then ccrCast(_Shout) end -- shout OoC
	
	if ccrValidTarget() and ccrPIIC() then

		if ccRS.G1zStarTaunt then TauntTrainer() end
		if ccRS.G1zStarInterrupt then InterruptTrainer() end

		if ccrPlayerHasTalent(103840) and _ImpendingVictory and SCA(103840) then
			ccrCastAttack(103840)
			_ImpendingVictory = false
			return
		end
		if ccrPlayerHasTalent(46968) and _Shockwave and SIR(46968) then
			ccrCast(46968)
			_Shockwave = false
			return
		end
		if ccrPlayerHasTalent(12323) and _PiercingHowl and SIR(12323) then
			ccrCast(12323)
			_PiercingHowl = false
			return
		end
		if _Disarm and SCA(676) then
			ccrCastAttack(676)
			_Disarm = false
			return
		end
		if _ShatteringThrow and SCA(64382) then
			ccrCastAttack(64382)
			_ShatteringThrow = false
			return
		end
		if _IntimidatingShout and SIR(5246) then
			ccrCast(5246)
			_IntimidatingShout = false
			return
		end
		if not ccrPlayerHasTalent(103840) and _VictoryRush and SCA(34428) then
			ccrCastAttack(34428)
			_VictoryRush = false
			return
		end
		if ccrPlayerHasTalent(107570) and _StormBolt and SCA(107570) then
			ccrCastAttack(107570)
			_StormBolt = false
			return
		end			

		if SIR(78) and (ccrPHB(122510) or ccrPHB(122016)) then -- ultimatum or glyph of incite HS Cleave Dump
			if (ccRS.Auto_AoE or ccRS.Manual_AoE) and GPlayerCount(5) > 1 then
				ccrCast(845)
			else
				ccrCast(78)
			end
		end
		-- if ccRS.G1zStarProtectionWarriorBerserkerRage and SIR(18499) and not ccrPHB(12880) and ((ccrPlayerHasGlyph(58098) and ccrPlayerRage() <= 110) or ccrPlayerRage() <= 90) then ccrCast(18499) end

		if vengeance() > UnitHealthMax("player")*0.20 then

			if useCDS and ccrPlayerHasTalent(107574) and SIR(107574) then ccrCast(107574) end -- avatar
			if useCDS and ccrPlayerHasTalent(12292) and SIR(12292) then ccrCast(12292) end -- bloodbath
			
			if useCDS and race == "Orc" and SIR(20572) then ccrCast(20572) end -- blood fury
			if useCDS and race == "Troll" and SIR(26297) then ccrCast(26297) end -- berserking
			if useCDS and race == "Blood Elf" and SIR(69179) then ccrCast(69179) end -- arcane torrent
			if ccrPlayerHasTalent(118000) and SIR(118000) and GPlayerCount(8) > 0 then ccrCast(118000) return end -- dragon roar
			if useCDS and SCA(64382) then ccrCastAttack(64382) return end -- shattering throw
			if useCDS and SIR(114207) and (not tSkullBanner or tSkullBanner+10 <= GetTime()) then ccrCast(114207) end -- skull banner
			if useCDS and SIR(1719) then ccrCast(1719) end -- recklessness
			if ccrPlayerHasTalent(107570) and SCA(107570) then ccrCastAttack(107570) return end -- storm bolt
			if ccrPlayerHasTalent(46968) and SIR(46968) then ccrCast(46968) return end -- shockwave
			if ccrPlayerHasTalent(46924) and SIR(46924) and GPlayerCount(8) > 0 then ccrCast(46924) return end -- bladestorm
		end

		if (ccRS.Auto_AoE or ccRS.Manual_AoE) and GPlayerCount(8) > 1 and SIR(6343) then ccrCast(6343) return end -- thunder clap
		if SCA(23922) then ccrCastAttack(23922) return end -- shield slam
		if SCA(6572) then ccrCastAttack(6572) return end -- revenge
		if _Shout and SIR(_Shout) and ((ccrPlayerHasGlyph(58098) and ccrPlayerRage() <= 100) or ccrPlayerRage() <= 80) then ccrCast(_Shout) return end -- shout
		if ccRS.G1zStarProtectionWarriorDS and SIR(1160) then ccrCast(1160) return end -- demoralizing shout
		if ccrPlayerHasTalent(103840) and SCA(103840) then -- self heal impending victory
			ccrCastAttack(103840)
			return
		elseif not ccrPlayerHasTalent(103840) and SCA(34428) then -- victory rush
			ccrCastAttack(34428)
			return
		end
		if SIR(20243) then ccrCastAttack(20243) return end -- devastate
	end
end


function vengeance() -- TODO: @Optimize @Error
	local tVengeance
	for i = 1, 40 do
		local name = UnitBuff("player", i)
		if name and name == "Vengeance" then
			tVengeance = i
			break
		elseif not name then
			break
		end
	end
	if UnitBuff("player", "Vengeance") ~= nil and tVengeance then
		debuffframe:ClearLines()
		debuffframe:SetUnitBuff("player", tVengeance)
		local text = debuffframeTextLeft2:GetText()
		local match = string.match(text, '%d+')
		return tonumber(match)
	else
		return 0
	end
end